有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java遍历数组并检查项的值

我通过从mysql表中获取数据来填充数组,我要做的是迭代该数组,检查每个项的值,然后根据值的大小执行不同的操作

这是我连接到数据库并尝试遍历数组的方法的代码

public void HomeRecord(){

    ArrayList<HomeTeamResults> allResults = new ArrayList<>();

    try 
    {
        //Sets up the connedtion to the database and installs drivers which are required.

        Class.forName("com.mysql.jdbc.Driver");                                                                        

        con = DriverManager.getConnection("jdbc:mysql://localhost", "username", "password");   


        String table = box1.getSelectedItem().toString();
        String SQL = "SELECT * FROM " + table + " WHERE `HomeTeam` = ?";
        PreparedStatement prepst;            

        prepst =  con.prepareStatement(SQL);
        prepst.setString(1,box1.getSelectedItem().toString());
        rs = prepst.executeQuery();

        HomeTeamResults hometeamResults=null;
        while (rs.next()) 
        {               
            hometeam = rs.getString("HomeTeam");                      
            awayteam = rs.getString("AwayTeam");                   
            result = rs.getString("Result");                             


            custs = (hometeam + "," + awayteam + "," + result);
            allResults.add(hometeamResults);
        }

    }

    catch (Exception e) 
    {
        System.out.println("Error " +e);                                                                               
    }

    System.out.println("Size of HomeArrayList::"+allResults.size());
    for(HomeTeamResults temp:allResults){                                 

   if(temp.getResult().equals("W")){
       hometeamvalue = hometeamvalue + 50;
   }  

   else if(temp.getResult().equals("D")){
       hometeamvalue = hometeamvalue + 10;
   }

   else
   {           
           hometeamvalue = hometeamvalue + 0;           
    }

    }

}

这是数组的代码

public class HomeTeamResults {   

private String hometeam;                                            
private String awayteam;                                
private String result;

public String getHomeTeam() {
return hometeam;
}

public void setHomeTeam(String hometeam) {
  this.hometeam = hometeam;
}

public String getAwayTeam() {
return awayteam;
}

public void setAwayTeam(String awayteam) {
  this.awayteam = awayteam;

public String getResult() {
return result;
}

public void setResult(String result) {
    this.result = result;
}

private  HomeTeamResults(String hometeam, String awayteam, String result) 
{
    this.hometeam = hometeam;
    this.awayteam = awayteam;
    this.result = result;

}

@Override
public String toString() 
{ 
    return " "+hometeam+", "+awayteam+", "+result; 
}
}

我的问题在于比较。当我尝试if(temp.getResult()时。等于(“W”),那么它根本不起作用。如果我尝试if(result.equals(“W”),那么它所做的就是从数组中获取第一个结果,然后假设数组中的所有其他项都是相同的

不知道我哪里出错了,有什么想法吗


共 (2) 个答案

  1. # 1 楼答案

    您要用null值初始化引用,首先要做的是创建对象,然后像

     HomeTeamResults hometeamResults= null;
                while (rs.next()) 
                {     hometeamResults=new HomeTeamResults()
                    hometeam = rs.getString("HomeTeam");                      
                    awayteam = rs.getString("AwayTeam");                   
                    result = rs.getString("Result");                             
                    hometeamResults.setHomeTeam(hometeam);
                    hometeamResults.setAwayTeam(awayteam);
                    hometeamResults.setResult(result);
                    allResults.add(hometeamResults);
                }
    
  2. # 2 楼答案

    您正在列表中添加对象,但在迭代结果时不在任何位置初始化对象

    HomeTeamResults hometeamResults=null;  // Object is null
            while (rs.next()) 
            {               
                hometeam = rs.getString("HomeTeam");                      
                awayteam = rs.getString("AwayTeam");                   
                result = rs.getString("Result");                             
                custs = (hometeam + "," + awayteam + "," + result); // No idea abt usage
                hometeamResults = new HomeTeamResults(hometeam,awayteam,result); // Initial It
                allResults.add(hometeamResults);   // Now List will contain proper object
            }